// 1.安装mongoose
// 2.导入mongoose
const mongoose = require("mongoose");

// 3.连接 mongodb 数据库
mongoose.connect("mongodb://127.0.0.1:27017/bilibili");

// 4.设置回调
// 设置连接成功的回调 once：事件回调函数只执行一次
mongoose.connection.once("open", () => {
  console.log("连接成功");
  // 5.创建文档的结构对象 Schema:结构
  // 设置集合中文档的属性和属性值的类型
  let BookSchema = new mongoose.Schema({
    name: String,
    author: String, // 字符串类型
    price: Number, // 数字类型
    is_hot: Boolean,  // boolean类型
    tags: Array,  // 数组类型
    pub_time:Date, // 日期类型
    test:mongoose.Schema.Types.Mixed // 任意类型
  });
  // 6.创建模型对象  对文档操作的封装对象
  let BookModel = mongoose.model("books", BookSchema);
  // books 操作的集合名称   bookSchema 文档的结构对象
  // 7.新增文档对象
  BookModel.create(
    {
      name: "西游记",
      author: "吴承恩",
      price: 19.9,
      is_hot: true,
      tags: ['四大名著','经典'],
      pub_time: new Date()
    }
  ).then((data)=>{
    console.log(data);
    // 8.关闭数据库连接 (项目运行过程中，不会添加该代码)
    mongoose.disconnect();
  }).catch((err)=>{
    console.log(err);
  });
});
// 设置连接失败的回调
mongoose.connection.on("err", () => {
  console.log("连接失败");
});
// 设置连接关闭的回调
mongoose.connection.on("close", () => {
  console.log("连接关闭");
});
